Concept
software analysis
Parents
Children
Large Language ModelsParsingProgram ComprehensionProgram TransformationRefactoring
107.1K
Publications
5.9M
Citations
137.5K
Authors
10.7K
Institutions
Formal Methods and Static Analysis
1974 - 1980
During 1974–1980, formal methods and verification became central to software correctness, with approaches ranging from a logical basis, symbolic execution, termination proofs, to automated program verification. Reliability modeling and quality evaluation advanced through empirical reliability studies and quantitative metrics, including software reliability theory, empirical models, and quality factors. Testing methodology emphasized data-driven test generation, fault distribution, and fault causation analyses to benchmark and improve software quality. Software engineering practice and analysis progressed through structured analysis for requirements definition, process-oriented design, and static analysis of early language programs to guide practice. Historical Significance: These breakthroughs established a paradigm in which mathematical reasoning and rigorous analysis underlie software correctness, influencing early program analysis, static analysis, and inspection-based quality assurance for decades to come. The integration of formal reasoning with empirical reliability and testing created a durable foundation for subsequent software engineering methods and tooling, shaping early QA standards and the design of future verification and testing frameworks.
• Formal methods and verification become central to software correctness, with approaches ranging from a logical basis, symbolic execution, termination proofs, to automated program verification [1], [3], [4], [6], [11].
• Reliability modeling and quality evaluation are pursued through empirical reliability studies and quantitative metrics, including software reliability theory, empirical models, and quality factors [2], [5], [7], [12], [13], [16], [17], [19].
• Testing methodology emphasizes data-driven test generation, fault distribution, and fault causation analyses to benchmark and improve software quality [10], [14], [20].
• Software engineering practice and analysis are advanced through structured analysis for requirements definition, process-oriented design, and static analysis of commercial PL/I programs to guide practice [8], [15], [18].
Empirical Software Analysis
1981 - 1994
Architecture-Centric Static Analysis
1995 - 2001
Automated Software Analysis
2002 - 2009
Mobile Software Analysis and Verification
2010 - 2016
Deep Neural Code Analysis
2017 - 2023